package ventanas;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

import clasesBasicas.Global;
import clasesBasicas.Usuario;

public class PanelAdministrar extends JPanel {
	
	private JTable tabla;
	private JPopupMenu jPMmenu;
	private DefaultTableModel dtm;
	private JPanel este;

	/**
	 * Create the panel.
	 */
	public PanelAdministrar() {
		este=this;
		this.setSize(new Dimension(800,650));
		String[][] datos = null;
		ArrayList<Usuario> aU = new ArrayList<Usuario>(); 
		aU = Global.sU.obtenerUsuariosRegistrados();
		if(aU.size()!= 0){
			datos = new String[aU.size()][5];
		}
		else{
			datos = new String[0][5];
		}
		String[] columnas = {"DNI", "Nombre", "Apellidos", "Id_Usuario","Email"};
		//Global.sU.mostrarTabla("VALORES_FAVORITOS");
			
		
		

		for (int i = 0; i < aU.size(); i++) 
		{

			
			Usuario temp = aU.get(i);
			
			
				
				datos[i][0] = temp.getDni() + "";
				datos[i][1] = temp.getNombre();
				datos[i][2] = temp.getApellidos();
				
				datos[i][3] = "" + temp.getId_usuario();
				datos[i][4] = "" + temp.getEmail();
				
		}
		
	
		

		tabla = new JTable(datos, columnas);
		tabla.setGridColor(new Color(0, 0, 0));
		tabla.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
		tabla.setPreferredSize(new Dimension(800,650));
		tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabla.setFont(new Font("Tahoma", Font.ROMAN_BASELINE, 16));

		
		
		tabla = new JTable(datos, columnas);
		dtm = new DefaultTableModel(datos, columnas);
		tabla.setModel(dtm);
		

		tabla.setRowHeight(18);
		tabla.setEnabled(true);

		
//		int ancho = tabla.getWidth();
		
		
		jPMmenu= new JPopupMenu();
		JMenuItem eliminarUsuario= new JMenuItem("Eliminar", new ImageIcon("imagenesBasicas/eliminar.jpeg"));
		JMenuItem enviarMensaje= new JMenuItem("Enviar notificación", new ImageIcon("imagenesBasicas/email.png"));
		jPMmenu.add(eliminarUsuario);
		jPMmenu.add(enviarMensaje);
		
		
		//escuchadores
		
		eliminarUsuario.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
					int dni=Integer.parseInt((String) dtm.getValueAt(tabla.getSelectedRow(), 0));
					String nick=(String) dtm.getValueAt(tabla.getSelectedRow(), 3);
					System.out.println(dni);
					System.out.println(nick);
					int eleccion=JOptionPane.showConfirmDialog(null, "¿Está seguro de que quiere eliminar la cuenta de "+nick+"?", "Eliminar cuenta", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
					if(eleccion==0)
					{
						System.out.println("Si quiero");
						int resultado=Global.sU.eliminarUsuario(dni, nick);
						if(resultado==1)
						{
							dtm.removeRow(tabla.getSelectedRow());
							dtm.fireTableDataChanged();
							tabla.repaint();
						}
					}
			}
			
		});
		
		enviarMensaje.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				String email=(String) dtm.getValueAt(tabla.getSelectedRow(), 4);
				VentanaEnvioMail enviarMail= new VentanaEnvioMail(email);
				enviarMail.setVisible(true);
			}
		});
		
		tabla.addMouseListener(new MouseAdapter() {
			
			public void mousePressed(MouseEvent e){
				if(e.isPopupTrigger())
				{
					jPMmenu.show(este,e.getX(),e.getY());	
				}
				
				}
			
			public void mouseReleased(MouseEvent e)
			{
				if(e.isPopupTrigger())
				{
					jPMmenu.show(este,e.getX(),e.getY());	
				}
			}
		});
		
		
		
//		TableColumnModel modeloColumna = tabla.getColumnModel(); 
//        TableColumn columnaTabla; 
//        int anchoColumna = 0;
//        for (int i = 0; i < tabla.getColumnCount(); i++) { 
//            columnaTabla = modeloColumna.getColumn(i); 
//            switch(i){ 
//                case 1: anchoColumna = (30*ancho)/100; 
//                        break; 
//                case 2: anchoColumna = (50*ancho)/100; 
//                        break; 
//                case 3: anchoColumna = (20*ancho)/100; 
//                        break; 
//                 
//            }                      
//            columnaTabla.setPreferredWidth(anchoColumna);            
//        } 
        
		JScrollPane scrollTabla = new JScrollPane(tabla);
		scrollTabla.setPreferredSize((new Dimension(800,650)));
		this.add(scrollTabla, "1, 2, fill, fill");
		

	}
}
